home *** CD-ROM | disk | FTP | other *** search
- {
- If you ever wanted to tell what Operating System Mode you are using,
- this /ditty/ will do the trick. It sets a global integer to a value
- which represents the Mode being used. There is also a demo_prog at the
- end of the unit.
- }
-
- unit mode;
-
- interface
-
- var
- OperatingMode : integer;
-
- { This integer holds a value of 0, 1, 2 or 3, which is an indicator
- if the machine is in:
- Dos Mode (0),
- Windows Standard Mode (1),
- Windows Enhanced Mode (2),
- DESQview mode (3); }
- implementation
-
- function wincheck : integer;
- begin
- asm
- mov ax, $4680
- int $2f
- mov dl, $1
- or ax, ax
- jz @finished
- mov ax, $1600
- int $2f
- mov dl, $2
- or al, al
- jz @Not_Win
- cmp al, $80
- jne @finished
- @Not_Win:
- mov ax, $1022
- mov bx, $0
- int $15
- mov dl, $3
- cmp bx, $0a01
- je @finished
- xor dl, dl
- @finished:
- xor ah, ah
- mov al, dl
- mov @Result, ax
- end;
- end;
-
- begin
- OperatingMode := Wincheck;
- end.
-
- program Use_Mode;
-
- uses
- mode;
-
- const
- xModeStringArr : Array[0..3] of string[16] =
- ('Dos Mode', 'Windows Standard', 'Windows Enhanced', 'DESQview Mode');
- begin
- Write(xModeStringArr[OperatingMode]);
- end.